package br.com.swp.campestre.session;


import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.apache.commons.lang3.time.DateUtils;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Begin;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.End;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.international.StatusMessages;
import org.jboss.seam.log.Log;
import org.jboss.seam.persistence.HibernateSessionProxy;

import br.com.swp.campestre.entity.ClientePF;
import br.com.swp.campestre.entity.ClientePJ;
import br.com.swp.campestre.entity.Lote;
import br.com.swp.campestre.entity.ParcelaFinancimentoCEF;
import br.com.swp.campestre.entity.ParcelaFinancimentoProprio;
import br.com.swp.campestre.entity.Venda;
import br.com.swp.campestre.enumeration.FormaPagamento;
import br.com.swp.campestre.enumeration.SimNao;
import br.com.swp.campestre.enumeration.StatusLoteFinanceiro;
import br.com.swp.campestre.enumeration.StatusLoteLegal;
import br.com.swp.campestre.enumeration.StatusLoteVenda;
import br.com.swp.campestre.enumeration.StatusParcela;

@Stateful
@Name("VendaBean")
public class VendaBean implements VendaLocal {

	@Logger
	private Log log;
	@In
	StatusMessages statusMessages;

	@In(required = true)
	Venda venda;
	
	@In(required=false , create=true , value="ConsultaVenda")
	ConsultaVenda consultaVenda;
	
	
	private String cnpj;
	
	private String cpf;
	@Out(scope = ScopeType.CONVERSATION, required = false)
	private ClientePF clientePF;

	@Out(scope = ScopeType.CONVERSATION, required = false)
	private ClientePJ clientePJ;
	
	//Busca lote para incluir na venda
	private String codigoLote;
	private List<Lote> lotes;
	
	//Campos aux para cadastro de cheques do finan proprio
	private BigDecimal valorChqFinanProp;
	private Date dataVencimentoChqFinanProp;
	private Integer numBancoChqFinanProp;
	private Integer numAgenciaChqFinanProp;
	private Integer numContaChqFinanProp;
	private Integer numChqFinanProp;
	private SimNao chqTerceiroFinanProp;
	private String nomeTerceiroChqFinanProp;
	private String cpfTerceiroChqFinanProp;
	private String tipoPessoa;

	private List<ParcelaFinancimentoProprio> parcelasFinanciamentoProprio;
	
	

//	private Integer numeroParcelaCaixa;
//	private BigDecimal valorParcelaCaixa;
	private List<ParcelaFinancimentoCEF> parcelasFinancimentoCEF;

	@PersistenceContext
	private EntityManager entityManager;

	@In(create = true, required = false)
	private HibernateSessionProxy hibernateSession;

	@Create
	public void init() {

	}
	
	@Out(required=false)
	private List<FormaPagamento> formasPgto;
	@Factory("formasPgto")
	public void formasPgto(){
		formasPgto = Arrays.asList(FormaPagamento.values());
	}
	
	
	@Out(required=false)
	private List<SimNao> simNaoList;
	@Factory("simNaoList")
	public void simNaoList(){
		simNaoList = Arrays.asList(SimNao.values());
	}

	public BigDecimal valorTotalLotes() {

		if (lotes == null) {
			return new BigDecimal(0);
		}

		BigDecimal total = new BigDecimal(0);

		for (Lote _l : lotes) {
			total = total.add(_l.getValor());
		}

		return total;
	}

	//@End(beforeRedirect = false)
	public void vendaBean() throws IllegalStateException {

		//entityManager.persist(venda);

		// Notifica o sucesso da operacao
		// statusMessages.add("#{messages.sucessoPreInscricao}");

	}
	
	public BigDecimal calculaValorVenda(){
		BigDecimal valorVenda = valorTotalLotes();
		if(venda.getValorDesconto() != null){
			valorVenda = valorVenda.subtract(venda.getValorDesconto());
		}
		return valorVenda;
	}
	
	private boolean erroGlobal = Boolean.FALSE;
	public boolean validaVenda(){

		statusMessages.clear();
		statusMessages.clearGlobalMessages();
		erroGlobal = Boolean.FALSE;

		
		//
		//
		// TRATA FINANCEIRO
		//
		//
		
		//Trata se algum valor foi informado
		if (venda.getValorEntrada() == null && venda.getValorFinanCEF() == null && venda.getValorFinanProprio() == null) {
			erroGlobal = Boolean.TRUE;
			statusMessages.add("Nenhum valor informado");
			return erroGlobal;
		}
		
		// trata desconto
		BigDecimal  _desconto = venda.getValorDesconto();
		if( _desconto != null){
			
			if(_desconto.floatValue() < 0){
				erroGlobal = Boolean.TRUE;
				statusMessages.add("Desconto deve ter um valor POSITIVO!");
			}
			
			if(_desconto.floatValue() > valorTotalLotes().floatValue()){
				erroGlobal = Boolean.TRUE;
				statusMessages.add("Desconto nao pode ser maior que valor da Venda");
			}
		} //Fim tratamento desconto
		
		// trata entrada
		BigDecimal _vlEntrada = venda.getValorEntrada();
		if(_vlEntrada != null){
			
			if(venda.getFormaPgtoEntrada() == null){
				erroGlobal = Boolean.TRUE;
				statusMessages.add("ENTRADA: Forma de pagamento da entrada deve ser informado");
			}
			
			if(venda.getFormaPgtoEntrada() == FormaPagamento.CHEQUE){
				
				if(venda.getNumBancoChqEntrada() == null ||
				   venda.getNumAgenciaChqEntrada() == null ||
				   venda.getNumContaChqEntrada() == null ||
				   venda.getNumChqEntrada() == null ){
					erroGlobal = Boolean.TRUE;
					statusMessages.add("ENTRADA: Quando Forma de Pagamento for CHEQUE os campos Banco, Agencia, Conta e Cheque devem ser informados");
				}
				
				if(venda.getChqEntradaTerceiro() == null){
					erroGlobal = Boolean.TRUE;
					statusMessages.add("ENTRADA: Quando Forma de Pagamento for CHEQUE deve ser informadso se o cheque eh de Terceiro ou Nao");
					
				}
				
				if(venda.getChqEntradaTerceiro() == SimNao.SIM){
					
					if(venda.getNomeTerceiroChqEntrada() == null ||
					   venda.getCpfTerceiroChqEntrada() == null){
						erroGlobal = Boolean.TRUE;
						statusMessages.add("ENTRADA: Quando Forma de Pagamento for CHEQUE e o cheque for de terceiro os campos Nome e CPF do terceiro deve ser informado");
					}
				}
				
			}
			
		}// Fim tratamento valor entrada
		
		// trata Financimento CEF
		BigDecimal _vlFinanCEF = venda.getValorFinanCEF();
		Date _Dt1parcela = venda.getDataPrimeiraParcelaFinanCEF();
		Integer _numParcelasCEF =  venda.getNumTotalParcelaFinanCEF();
		BigDecimal _vlParcelaCEF = venda.getValorParcelaFinanCEF();
		if( (_vlFinanCEF == null || _Dt1parcela == null || _numParcelasCEF == null || _vlParcelaCEF == null ) &&
			(_vlFinanCEF != null || _Dt1parcela != null || _numParcelasCEF != null || _vlParcelaCEF != null )){
			erroGlobal = Boolean.TRUE;
			statusMessages.add("FINANCIMANRO CAIXA: Quando houver Financimanto Caixa os campos Valor Financiado, Data 1a Parcela, Quantidade Parcelas e Valor Parcela devem ser informados");
			
		} else if (_vlFinanCEF != null){
			
			if(venda.getValorFinanCEF().floatValue() <= 0){
				erroGlobal = Boolean.TRUE;
				statusMessages.add("FINANCIMANRO CAIXA:  Valor Financiado invalido");
			}
			
	//		if(venda.getDataPrimeiraParcelaFinanCEF().getTime() <= Calendar.getInstance().getTimeInMillis()){
	//			erroGlobal = Boolean.TRUE;
	//			statusMessages.add("FINANCIMANRO CAIXA:  Data 1a Parcela invalido");
	//		}
			
			if(venda.getNumTotalParcelaFinanCEF() < 0){
				erroGlobal = Boolean.TRUE;
				statusMessages.add("FINANCIMANRO CAIXA:  Quantidade Parcelas invalido");
			}
			
			if(venda.getValorParcelaFinanCEF().floatValue() <= 0){
				erroGlobal = Boolean.TRUE;
				statusMessages.add("FINANCIMANRO CAIXA:  Valor Parcela invalido");
			}
			
		}//Fim trata Financiamento CEF
		
		
		
		
		
		return erroGlobal;
		
	}

	@End(beforeRedirect=false)
	public String novaVenda() throws IllegalStateException {
		
		if(validaVenda()){
			return "";
		}

		//Trata campos defaul
		venda.setDataVenda(Calendar.getInstance().getTime());
		venda.setValorVenda(calculaValorVenda());
		
		entityManager.persist(venda);
		entityManager.flush();
		
		//Trata campos entrada
		if(venda.getChqEntradaTerceiro() == null && venda.getValorEntrada() == null){
			venda.setChqEntradaTerceiro(SimNao.NAO);
		}
		
		//Trata campos financimanto CEF
		if(venda.getValorParcelaFinanCEF()!= null){
			geraParcelasCaixa();
			venda.setFinanCEF(SimNao.SIM);
			venda.setValorSomaParcelaFinanCEF(venda.getValorParcelaFinanCEF().multiply( new BigDecimal(venda.getNumTotalParcelaFinanCEF())));
		} else {
			venda.setFinanCEF(SimNao.NAO);
		}
			
		
		//trata financimanto proprio
		gravaParcelasFinanciamentoProprio();
		if(parcelasFinanciamentoProprio != null && !parcelasFinanciamentoProprio.isEmpty()){
			venda.setFinanProprio(SimNao.SIM);
		} else {
			venda.setFinanProprio(SimNao.NAO);
		}
		
		
		

		
		//Seta status dos lotes
		for (Lote _lote : lotes) {
			
			//seta venda no lote
			_lote.setVenda(venda);
			
			//Status Financeiro
			//Status Legal
			if((parcelasFinancimentoCEF != null && !parcelasFinancimentoCEF.isEmpty()) || (parcelasFinanciamentoProprio != null && !parcelasFinanciamentoProprio.isEmpty())){
				_lote.setStatusLoteFinanceiro(StatusLoteFinanceiro.FINANCIAMENTO_EM_ANDAMENTO);
				_lote.setStatusLoteLegal(StatusLoteLegal.PROPRIO);

			} else if (venda.getFormaPgtoEntrada().equals(FormaPagamento.CHEQUE)){
				_lote.setStatusLoteFinanceiro(StatusLoteFinanceiro.FINANCIAMENTO_EM_ANDAMENTO);
				_lote.setStatusLoteLegal(StatusLoteLegal.PROPRIO);
			
			} else {
				_lote.setStatusLoteFinanceiro(StatusLoteFinanceiro.QUITADO);
				_lote.setStatusLoteLegal(StatusLoteLegal.A_TRANSFERIR);
			}
			
			//Status Venda
			_lote.setStatusLoteVenda(StatusLoteVenda.VENDIDO);
			
		}
		
		venda.setLotes(lotes);
		
		if( parcelasFinancimentoCEF != null && !parcelasFinancimentoCEF.isEmpty() ){
			venda.setParcelasFinancimentoCEF(parcelasFinancimentoCEF);
		}
		
		try {
			entityManager.merge(venda);
			consultaVenda.setVenda(venda);
			statusMessages.add("Venda Realizada com Sucesso");
			return "/displayVenda.xhtml";
			
		} catch (Exception e) {
			e.printStackTrace();
			return "";
		}
		

	}
	
	private void gravaParcelasFinanciamentoProprio(){
		
		if(parcelasFinanciamentoProprio != null && !parcelasFinanciamentoProprio.isEmpty()){
			BigDecimal total = new BigDecimal(0);
			for (ParcelaFinancimentoProprio _p : parcelasFinanciamentoProprio) {
				total = total.add(_p.getValor());
				_p.setVenda(venda);
				entityManager.persist(_p);
			}
			entityManager.flush();
			
			venda.setParcelasFinancimentoProprio(parcelasFinanciamentoProprio);
			venda.setValorFinanProprio(total);
			venda.setNumTotalParcelaFinanProprio(parcelasFinanciamentoProprio.size());
			
		}
		
	}

	//Gera parcelas do Financimanto da Caixa
	//Somente pode ser chamedo apos o metodo validaVenda()
	private void geraParcelasCaixa(){
		
		if(venda.getNumTotalParcelaFinanCEF() == null){
			return;
		}
		
		if (parcelasFinancimentoCEF == null) {
			parcelasFinancimentoCEF = new ArrayList<ParcelaFinancimentoCEF>(0);
		} else {
			parcelasFinancimentoCEF.clear();
		}
		
		for (int i = 1; i <= venda.getNumTotalParcelaFinanCEF(); i++) {
			
			ParcelaFinancimentoCEF _p = new ParcelaFinancimentoCEF();
			_p.setVenda(venda);
			_p.setParcela(i);
			_p.setValor(venda.getValorParcelaFinanCEF());
			_p.setStatusParcela(StatusParcela.PENDENTE);

			//Calcula nova data vencimento
			Calendar _vencimento = Calendar.getInstance();
			_vencimento.setTime(venda.getDataPrimeiraParcelaFinanCEF());
			_vencimento.setTime(DateUtils.addMonths(_vencimento.getTime(), i-1));
			
			_p.setDataVencimento(_vencimento.getTime());
			entityManager.persist(_p);
			
			parcelasFinancimentoCEF.add(_p);
			
		}
		entityManager.flush();
		venda.setParcelasFinancimentoCEF(parcelasFinancimentoCEF);
		
	}

	@Begin(join = true)
	public void pesquisaCliente() {

		clientePF = null;
		List<ClientePF> clientesPF = null;
		clientePJ = null;
		List<ClientePJ> clientesPJ = null;

		
		if (tipoPessoa.equals("FISICA")){ 
	
			Criteria crt = hibernateSession.createCriteria(ClientePF.class);
	
			if (cpf != null && !cpf.equals("")) {
				crt.add(Restrictions.eq("cpf", cpf));
			}
	
			if (cpf != null && !cpf.equals("")) {
				clientesPF = crt.list();
			}
	
			if (clientesPF != null && clientesPF.size() == 1) {
				clientePF = clientesPF.get(0);
			} else {
				clientePF = null;
				statusMessages.add("Cliente nao encontrado");
			} 
				
		} else if (tipoPessoa.equals("JURIDICA")){
			
	
			Criteria crt = hibernateSession.createCriteria(ClientePJ.class);
	
			if (cnpj != null && !cnpj.equals("")) {
				crt.add(Restrictions.eq("cnpj", cnpj));
			}
	
			if (cnpj != null && !cnpj.equals("")) {
				clientesPJ = crt.list();
			}
	
			if (clientesPJ != null && clientesPJ.size() == 1) {
				clientePJ = clientesPJ.get(0);
			} else {
				clientePJ = null;
				statusMessages.add("Cliente nao encontrado");
			} 
				
		}	
	}

	
	
	//Adiciona PF a venda
	public void addClientePF() {
		
		if (venda == null){
			venda = new Venda();
		}
		
		if (venda.getClientesPF() == null){
			venda.setClientesPF(new ArrayList<ClientePF>());
		}
		
		venda.getClientesPF().add(clientePF);
	}

	//Adiciona PJ a venda
	public void addClientePJ() {
		
		if (venda == null){
			venda = new Venda();
		}
		
		if (venda.getClientesPJ() == null){
			venda.setClientesPJ(new ArrayList<ClientePJ>());
		}
		
		venda.getClientesPJ().add(clientePJ);
	}
	
	
	public void removeClientePF(ClientePF clientePF){
		
		for (ClientePF _clientePF : venda.getClientesPF()) {
			if(_clientePF.getId().equals(clientePF.getId())){
				venda.getClientesPF().remove(clientePF);
				break;
			}
		}
		
	}
	
	public void removeClientePJ(ClientePJ clientePJ){
		
		for (ClientePJ _clientePJ : venda.getClientesPJ()) {
			if(_clientePJ.getId().equals(clientePJ.getId())){
				venda.getClientesPJ().remove(clientePJ);
				break;
			}
		}
		
	}
	//Adiciona lotes a venda
	public void addLote() {


		try {
			
			Lote _lote = null;
			
			if (lotes == null) {
				lotes = new ArrayList<Lote>();
			}

			List<Lote> loteResult = null;

			Criteria crt = hibernateSession.createCriteria(Lote.class);

			if (codigoLote != null && !codigoLote.equals("")) {
				crt.add(Restrictions.eq("codigoLote", codigoLote).ignoreCase());
			}

			if (codigoLote != null && !codigoLote.equals("")) {
				loteResult = crt.list();
			}

			if(loteResult.isEmpty()){
				statusMessages.add("Lote nao encontrado");
				return;
			}
			
			_lote = loteResult.get(0);
			if(_lote.getStatusLoteVenda().equals(StatusLoteVenda.LIVRE)){
				
				if(lotes.contains(_lote)){
					statusMessages.add("Lote "+ _lote.getCodigoLote() +" jah inserido");
				} else {
					lotes.add(_lote);
				}
				
			} else if(_lote.getStatusLoteVenda().equals(StatusLoteVenda.RESERVADO)){
				statusMessages.add("Lote "+ _lote.getCodigoLote() +" jah reservado");
				
			} else if(_lote.getStatusLoteVenda().equals(StatusLoteVenda.VENDIDO)){
				statusMessages.add("Lote jah vendido");
				
			} 
			
		} catch (Exception e) {
			e.printStackTrace();
			statusMessages.add("Erro ao buscar Lote");
			
		}

		
	}
	
	public void removeLote(Lote _lote){
		
		
		if(venda != null && lotes != null){
			
			for (Lote _l : lotes) {
				if(_l.getId().equals(_lote.getId())){
					lotes.remove(_lote);
					break;
				}
			}
			
		}
		
		
	}

	
	
	
	//Adiciona parcelas do financiamento proprio na lista
	public void addParcelaFinanProp(){

		
		statusMessages.clear();
		statusMessages.clearGlobalMessages();
		erroGlobal = Boolean.FALSE;
		boolean erro = Boolean.FALSE;
		if(parcelasFinanciamentoProprio == null){
			parcelasFinanciamentoProprio = new ArrayList<ParcelaFinancimentoProprio>(0);
		}


		//Trata valor
		if(valorChqFinanProp == null){
			statusMessages.add("cheque deve ter um valor informado");
			erro = true;
		} else if (valorChqFinanProp.floatValue() < 0){
			statusMessages.add("cheque deve ter um valor valido");
			erro = true;
		}
		
		//Trata dataVencimento
		if(dataVencimentoChqFinanProp == null){
			statusMessages.add("cheque deve ter uma data informada");
			erro = true;
		}

		//Trata numBancoChqFinanProp
		if(numBancoChqFinanProp == null){
			statusMessages.add("cheque deve ter um Banco informado");
			erro = true;
		}
		
		//Trata numAgenciaChqFinanProp
		if(numAgenciaChqFinanProp == null){
			statusMessages.add("cheque deve ter uma Agencia informada");
			erro = true;
		}
		
		//Trata numContaChqFinanProp
		if(numContaChqFinanProp == null){
			statusMessages.add("cheque deve ter uma Conta informada");
			erro = true;
		}
		
		//Trata numChqFinanProp
		if(numChqFinanProp == null){
			statusMessages.add("cheque deve ter um Numero informado");
			erro = true;
		}
		
		//Trata chqTerceiroFinanProp
		if(chqTerceiroFinanProp == null){
			statusMessages.add("informe se o cheque eh de terceiro ou nao");
			erro = true;
		} else if(chqTerceiroFinanProp == SimNao.SIM){
			if(nomeTerceiroChqFinanProp == null || nomeTerceiroChqFinanProp.equals("")){
				statusMessages.add("Se cheque eh de terceiro o nome do terceiro deve ser informado");
				erro = true;
			}
			if(cpfTerceiroChqFinanProp == null || cpfTerceiroChqFinanProp.equals("")){
				statusMessages.add("Se cheque eh de terceiro o CPF do terceiro deve ser informado");
				erro = true;
			}
		} else if (chqTerceiroFinanProp == SimNao.NAO) {
			nomeTerceiroChqFinanProp = null;
			cpfTerceiroChqFinanProp = null;
		}
		
		if(!erro){
			ParcelaFinancimentoProprio _pfp = new ParcelaFinancimentoProprio();
			_pfp.setValor(valorChqFinanProp);
			_pfp.setDataVencimento(dataVencimentoChqFinanProp);
			_pfp.setNumBancoChq(numBancoChqFinanProp);
			_pfp.setNumAgenciaChq(numAgenciaChqFinanProp);
			_pfp.setNumContaChq(numContaChqFinanProp);
			_pfp.setNumChq(numChqFinanProp);
			_pfp.setChqTerceiro(chqTerceiroFinanProp);
			_pfp.setNomeTerceiro(nomeTerceiroChqFinanProp);
			_pfp.setCpfTerceiro(cpfTerceiroChqFinanProp);
			_pfp.setStatusParcela(StatusParcela.PENDENTE);
			
			parcelasFinanciamentoProprio.add(_pfp);
			calculaValorTotalFinanProprio();
			
			
		}
		
		
	}
	
	private void calculaValorTotalFinanProprio(){
		
		BigDecimal _totalFinamProp = new BigDecimal(0);
		for (ParcelaFinancimentoProprio _p : parcelasFinanciamentoProprio) {
			_totalFinamProp.add(_p.getValor());
		}
		venda.setValorFinanProprio(_totalFinamProp);
		
	}

	@Destroy
	@Remove
	public void destroy() {
		lotes = null;
		cpf = null;

	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public ClientePF getClientePF() {
		return clientePF;
	}

	public void setClientePF(ClientePF clientePF) {
		this.clientePF = clientePF;
	}

	public void setCodigoLote(String codigoLote) {
		this.codigoLote = codigoLote;
	}

	public String getCodigoLote() {
		return codigoLote;
	}

	public void setLotes(List<Lote> lotes) {
		this.lotes = lotes;
	}

	public List<Lote> getLotes() {
		return lotes;
	}

	public void setParcelasFinancimentoCaixa(
			List<ParcelaFinancimentoCEF> parcelasFinancimentoCaixa) {
		this.parcelasFinancimentoCEF = parcelasFinancimentoCaixa;
	}

	public List<ParcelaFinancimentoCEF> getParcelasFinancimentoCaixa() {
		return parcelasFinancimentoCEF;
	}

	//@Override
	public void setParcelasFinancimentoCaixa() {
		// TODO Auto-generated method stub

	}

	//@Override
	public void addFinancimentoCaixa() {

		// if (parcelasFinancimentoCaixa == null ){
		// parcelasFinancimentoCaixa = new
		// ArrayList<ParcelaFinancimentoCaixa>();

//		ParcelaFinancimentoCEF parcelasFinancimentoCaixa = new ParcelaFinancimentoCEF();
//		parcelasFinancimentoCaixa.setParcela(numeroParcelaCaixa);
//		parcelasFinancimentoCaixa.setValor(valorParcelaCaixa);

		// parcelasFinancimentoCaixa.add(arg0, arg1)
		// venda.setParcelaFinancimentoCaixa(parcelaFinancimentoCaixa)

		// List<ParcelaFinancimentoCaixa> financimentoCaixaResult = null;

		// Criteria crt =
		// hibernateSession.createCriteria(ParcelaFinancimentoCaixa.class);
		//
		// if( codigoLote != null && !codigoLote.equals("")){
		// crt.add(Restrictions.eq("codigoLote", codigoLote));
		// }
		//
		// if (codigoLote != null && !codigoLote.equals("")) {
		// loteResult = crt.list();
		// }
		//
		// lotes.add(loteResult.get(0));

	}

//	public void setValorParcelaCaixa(BigDecimal valorParcelaCaixa) {
//		this.valorParcelaCaixa = valorParcelaCaixa;
//	}
//
//	public BigDecimal getValorParcelaCaixa() {
//		return valorParcelaCaixa;
//	}
//
//	public void setNumeroParcelaCaixa(Integer numeroParcelaCaixa) {
//		this.numeroParcelaCaixa = numeroParcelaCaixa;
//	}
//
//	public Integer getNumeroParcelaCaixa() {
//		return numeroParcelaCaixa;
//	}

	public Venda getVenda() {
		return venda;
	}

	public void setVenda(Venda venda) {
		this.venda = venda;
	}

	public List<FormaPagamento> getFormasPgto() {
		return formasPgto;
	}

	public void setFormasPgto(List<FormaPagamento> formasPgto) {
		this.formasPgto = formasPgto;
	}

	public List<SimNao> getSimNaoList() {
		return simNaoList;
	}

	public void setSimNaoList(List<SimNao> simNaoList) {
		this.simNaoList = simNaoList;
	}

	public BigDecimal getValorChqFinanProp() {
		return valorChqFinanProp;
	}

	public void setValorChqFinanProp(BigDecimal valorChqFinanProp) {
		this.valorChqFinanProp = valorChqFinanProp;
	}

	public Date getDataVencimentoChqFinanProp() {
		return dataVencimentoChqFinanProp;
	}

	public void setDataVencimentoChqFinanProp(Date dataVencimentoChqFinanProp) {
		this.dataVencimentoChqFinanProp = dataVencimentoChqFinanProp;
	}

	public Integer getNumBancoChqFinanProp() {
		return numBancoChqFinanProp;
	}

	public void setNumBancoChqFinanProp(Integer numBancoChqFinanProp) {
		this.numBancoChqFinanProp = numBancoChqFinanProp;
	}

	public Integer getNumAgenciaChqFinanProp() {
		return numAgenciaChqFinanProp;
	}

	public void setNumAgenciaChqFinanProp(Integer numAgenciaChqFinanProp) {
		this.numAgenciaChqFinanProp = numAgenciaChqFinanProp;
	}

	public Integer getNumContaChqFinanProp() {
		return numContaChqFinanProp;
	}

	public void setNumContaChqFinanProp(Integer numContaChqFinanProp) {
		this.numContaChqFinanProp = numContaChqFinanProp;
	}

	public Integer getNumChqFinanProp() {
		return numChqFinanProp;
	}

	public void setNumChqFinanProp(Integer numChqFinanProp) {
		this.numChqFinanProp = numChqFinanProp;
	}

	public SimNao getChqTerceiroFinanProp() {
		return chqTerceiroFinanProp;
	}

	public void setChqTerceiroFinanProp(SimNao chqTerceiroFinanProp) {
		this.chqTerceiroFinanProp = chqTerceiroFinanProp;
	}

	public String getNomeTerceiroChqFinanProp() {
		return nomeTerceiroChqFinanProp;
	}

	public void setNomeTerceiroChqFinanProp(String nomeTerceiroChqFinanProp) {
		this.nomeTerceiroChqFinanProp = nomeTerceiroChqFinanProp;
	}

	public String getCpfTerceiroChqFinanProp() {
		return cpfTerceiroChqFinanProp;
	}

	public void setCpfTerceiroChqFinanProp(String cpfTerceiroChqFinanProp) {
		this.cpfTerceiroChqFinanProp = cpfTerceiroChqFinanProp;
	}

	public List<ParcelaFinancimentoProprio> getParcelasFinanciamentoProprio() {
		return parcelasFinanciamentoProprio;
	}

	public void setParcelasFinanciamentoProprio(
			List<ParcelaFinancimentoProprio> parcelasFinanciamentoProprio) {
		this.parcelasFinanciamentoProprio = parcelasFinanciamentoProprio;
	}

	public boolean isErroGlobal() {
		return erroGlobal;
	}

	public void setErroGlobal(boolean erroGlobal) {
		this.erroGlobal = erroGlobal;
	}

	public void setTipoPessoa(String tipoPessoa) {
		this.tipoPessoa = tipoPessoa;
	}

	public String getTipoPessoa() {
		return tipoPessoa;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public String getCnpj() {
		return cnpj;
	}
	
	public ClientePJ getClientePJ() {
		return clientePJ;
	}

	public void setClientePJ(ClientePJ clientePJ) {
		this.clientePJ = clientePJ;
	}
}
